<?php
/**
 * 返回结果通用类
 */
namespace Biz\tools\helper;



class ResultRefactor 
{
    const MSG_SUCCESS = '成功';
    const SYSTEM_ERROR = '系统错误';
    /**
     *
     * 更新缓存数据
     */
    const CODE_SUCCESS = 1;
    /**
     * 使用缓存数据
     */
    const CODE_NO_UPDATE = 1;
    /**
     * 请求失败
     */
    const CODE_ERROR = 0;
    /**
     * 更新数据缓存
     */
    const CODE_UPDATE = 2;
    /**
     * 没有权限
     */
    const CODE_NOAUTH = -402;
    /**
     * 下载最新app
     */
    const CODE_DOWNLOAD_APP = -405;
    /**
     * 未登录或者登陆失效
     */
    const CODE_NO_LOGIN = -401;
    /**
     * 地址要临时转移到指定页面
     */
    const  CODE_REDIRECT = 302;
    /**
     * 禁止访问
     */
    const  CODE_FORBIDDEN = 403;
    /**
     * 当前版本号
     */
    const VERSION = '2.1';

    private array $resultArr = [
        'code' => -1,
        'msg' => '',
        'data' => '',
        'version' => self::VERSION,
    ];

    /**
     * 返回状态码
     * @param $code
     * @return $this
     */
    public function setCode($code)
    {
        $this->resultArr['code'] = $code;
        return $this;
    }

    public function getCode()
    {
        return $this->resultArr['code'];
    }

    /**
     * 返回消息
     * @param $msg
     * @return $this
     */
    public function setMsg($msg): self
    {
        $this->resultArr['msg'] = $msg;
        return $this;
    }

    public function getMsg()
    {
        return $this->resultArr['msg'];
    }

    /**
     * 返回数据
     * @param $data
     * @return $this
     */
    public function setData($data): self
    {
        $this->resultArr['data'] = $data;
        return $this;
    }

    public function getData()
    {
        return $this->resultArr['data'];
    }

    /**
     * 返回数组个数
     * @param $cnt
     * @return $this
     */
    public function setCnt($cnt): self
    {
        $this->resultArr['cnt'] = $cnt;
        return $this;
    }

    public function getCnt()
    {
        return $this->resultArr['cnt'];
    }

    /**
     * 返回接口版本号
     * @param $version
     * @return $this
     */
    public function setVersion($version): self
    {
        $this->resultArr['version'] = $version;
        return $this;
    }

    public function getVersion()
    {
        return $this->resultArr['version'];
    }

    /**
     * 返回message 兼容老版本
     *
     * @param $message
     * @return $this
     */
    public function setMessage($message): self
    {
        $this->resultArr['message'] = $message;
        return $this;
    }

    public function getMessage()
    {
        return $this->resultArr['message'];
    }

    /**
     * 返回数组
     * @return array
     */
    public function toArray(): array
    {
        return $this->resultArr;
    }

    /**
     * 返回规范的json类型数据
     * @param int $options
     * @return string
     */
    public function toJson($options = 0): string
    {
        return json_encode($this->resultArr, $options);
    }
}